package net.suncaper.demo.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import net.suncaper.demo.domain.*;
import net.suncaper.demo.mapper.OrderMapper;
import net.suncaper.demo.service.OrderService;
import net.suncaper.demo.service.ProductService;
import net.suncaper.demo.service.StoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
@Controller
@RequestMapping
public class StoreController {
    @Autowired
    private StoreService storeService;
    @Autowired
    private ProductService productService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderMapper orderMapper;
    String temp;
    //添加
    @GetMapping("/store/addStore")
    public String storePage(){
        return "pages/store/add-store.html";
    }

    @PostMapping("/store/addStore")
    public String saveAddStore(Store store){
        storeService.saveAddStoreMes(store);
        return "pages/user/index.html";
    }
    //修改
    @GetMapping("/store/updateStore")
    public String editPage(int storeId,Model model){
        model.addAttribute("store",storeService.findStoreBySId(storeId));
        return "pages/store/edit-store.html";
    }

    @PostMapping("/store/updateStore")
    public String saveUpdateStore(Store store){
        storeService.saveUpdateStoreMes(store);
        return "pages/index.html";
    }
    //删除店铺
    @GetMapping("/store/delStore")
    public String delPage(int storeId,Model model){
        model.addAttribute("store",storeService.findStoreBySId(storeId));
        return "pages/store/del-store.html";
    }
    @PostMapping("/store/delStore")
    public String delStoreBySId(Store store){
        if(store.getStoreState()==0){
            storeService.delStoreBySIdMes(store);
        }else {
            Integer temp =1;
            store.setStoreIsdel(temp);
            System.out.println(store.getStoreIsdel());
            storeService.saveUpdateStoreMes(store);
        }

        return "pages/user/index.html";
    }

    @RequestMapping("/searchStore")
    @ResponseBody
    public List<Store> findStore1(){
        return storeService.findStore();
    }

    @RequestMapping("/store")
    public String storePage(Model model){
        List<Store>stores=storeService.findStore();
        model.addAttribute("stores",stores);
        return "pages/store/list";
    }

    @RequestMapping("/searchStoreByUid")
    @ResponseBody
    public List<Store> findStoreByUid(int userId){
        return storeService.findStoreByUId(userId);
    }
    //展示商户对应的全部店铺
    @GetMapping ("/store/showallbyuid")
    public String showallbyuid(HttpServletRequest request,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        HttpSession session = request.getSession();
        User user = (User)session.getAttribute("user");
        Integer userId = user.getUserId();
        PageHelper.startPage(pageNum,4);
        List<Store> storesbyuid = storeService.findStoreByUId(userId);
        PageInfo<Store> pageInfo = new PageInfo<Store>(storesbyuid);
        model.addAttribute("pageInfo",pageInfo);
        return "pages/store/listbyuid.html";
    }

    @GetMapping("/store/findallstore")
    public String storeShowByUidPage1(HttpServletRequest request,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        HttpSession session = request.getSession();
        User user =(User)session.getAttribute("user");
        Integer userId =user.getUserId();
        System.out.println("用户ID为："+userId);
        PageHelper.startPage(pageNum,5);
        List<Store> storesbyuid1 = storeService.findStoreByUId(userId);
        PageInfo<Store> pageInfo = new PageInfo<Store>(storesbyuid1);
        model.addAttribute("pageInfo",pageInfo);

        return "pages/store/findStore.html";
    }
    //搜索店铺按关键字
    @GetMapping("/store/showallbyname")
    public String storeShowBynamePage(String storeName,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        PageHelper.startPage(pageNum,8);
        List<Store> stores = storeService.findStoreByName(storeName);
        PageInfo<Store> pageInfo = new PageInfo<Store>(stores);
        model.addAttribute("pageInfo",pageInfo);
        temp="name";
        model.addAttribute("temp",temp);
        return "pages/store/showsearchResult";
    }
    //搜索按城市店铺
    @GetMapping("/store/showallbycity")
    public String storeShowBycityPage(String storeCity,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        PageHelper.startPage(pageNum,4);
        List<Store> stores = storeService.findStoreByCity(storeCity);
        PageInfo<Store> pageInfo = new PageInfo<Store>(stores);
        model.addAttribute("pageInfo",pageInfo);
        temp="city";
        model.addAttribute("temp",temp);
        return "pages/store/showsearchResult";
    }

    //商户按关键字搜索城市
    @GetMapping("/store/findallbyname")
    public String storeShowBynamePage1(String storeName,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        PageHelper.startPage(pageNum,5);
        List<Store> stores = storeService.findStoreByName(storeName);
        PageInfo<Store> pageInfo = new PageInfo<Store>(stores);
        model.addAttribute("pageInfo",pageInfo);
        return "pages/store/findStore.html";
    }

    //商户搜索按城市店铺
    @GetMapping("/store/findallbycity")
    public String storeShowBycityPage1(String storeCity,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        PageHelper.startPage(pageNum,5);
        List<Store> stores = storeService.findStoreByCity(storeCity);
        PageInfo<Store> pageInfo = new PageInfo<Store>(stores);
        model.addAttribute("pageInfo",pageInfo);
        return "pages/store/findStore.html";
    }
    //展示全部店铺
    @GetMapping("/store/searchallStore")
    public String searchallStore(Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        PageHelper.startPage(pageNum,8);
        List<Store>stores=storeService.findStore();
        PageInfo<Store> pageInfo = new PageInfo<Store>(stores);
        model.addAttribute("pageInfo",pageInfo);
        System.out.println("每页显示条数;"+pageInfo.getPageSize());
        return "pages/store/searchallStore";
    }

    //获取该商户对应的店铺对应的商品对应的订单
    @GetMapping("/store/orderbystore")
    public String storeAndorderPage(HttpServletRequest request,Model model, @RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum){
        HttpSession session = request.getSession();
        User user = (User)session.getAttribute("user");
        Integer userId = user.getUserId();
        PageHelper.startPage(pageNum,4);
//        List<Store> stores = storeService.findStoreByUId(userId);
//        List<Order> orders = orderService.findOrder();
//        for(Order order:orders){
//            for(Store store:stores){
//                List<Product> products = productService.findProductBystoreId(store.getStoreId());
//                Iterator<Product> itr = products.iterator();
//                while (itr.hasNext()) {
//                    Product product = itr.next();
//                    if(!order.getProductId().equals(product.getProductId()) ){
//                        itr.remove();
//                    }
//                }
//            }
//        }
        OrderServiceRequest request1 = new OrderServiceRequest();
        request1.setKeyword(userId);
        List<Order> orders = orderMapper.selcetOrderByStore(request1);
        PageInfo<Order> pageInfo = new PageInfo<Order>(orders);
        model.addAttribute("pageInfo",pageInfo);
        return "pages/store/orderbystore.html";
    }

    //管理员查看待审核店铺
    @GetMapping("/store/storetoadmin")
    public String storetoAdmin(Model model){
        model.addAttribute("stores",storeService.findStoreByState(0));
        return "pages/store/storetoAdmin.html";
    }

    //查看店铺详细内容
    @GetMapping("/store/showmesbySid")
    public String storeshowPage(String storeId,Model model){
        int storeID = Integer.valueOf(storeId).intValue();
        model.addAttribute("stores",storeService.findStoreBySId(storeID));
        return "pages/store/showmesbySid.html";
    }

    //通过审核
    @GetMapping("/store/cheekStore")
    public String cheekStore(String storeId,Model model){
        int storeID = Integer.valueOf(storeId).intValue();
        Store store = storeService.findStoreBySId(storeID);
        store.setStoreState(1);
        storeService.saveUpdateStoreMes(store);
        return "pages/user/index.html";
    }
}

